package com.itheima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.mapper.ClazzMapper;
import com.itheima.pojo.Clazz;
import com.itheima.pojo.Emp;
import com.itheima.pojo.Pagination;
import com.itheima.pojo.PageResult;
import com.itheima.service.ClazzService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;

import java.time.LocalDateTime;
import java.util.List;

@Service
@Slf4j
public class ClazzServicelmpl implements ClazzService {
    @Autowired
    private ClazzMapper clazzMapper;



    /**
     * 查询所有
     * @return
     */
    @Override
    public PageResult<Clazz> finAll(Pagination clazzPage) {

        log.info("分页查询，参数：{}",clazzPage);
//        // 1. 使用PageHelper进行分页设置
//        PageHelper.startPage(clazzPage.getPage(),clazzPage.getPageSize());
//        // 2. 调用Mapper执行查询，获取当前页数据列表
//        List<Clazz> list = clazzMapper.list(clazzPage);

        // 开启分页，使用PageHelper进行分页设置
        PageHelper.startPage(clazzPage.getPage(), clazzPage.getPageSize());

        // 查询数据（返回的是 Page 类型），调用Mapper执行查询，获取当前页数据列表
        List<Clazz> list = clazzMapper.list(clazzPage);

        // 使用 PageInfo 封装分页信息
        Page<Clazz> page= (Page<Clazz>) list;
        return new PageResult<Clazz>(page.getTotal(),page.getResult());
//        PageInfo<Clazz> pageInfo = new PageInfo<>(list);

        // 返回给前端
//        return new PageResult<>(pageInfo.getTotal(), pageInfo.getList());
    }


    /**
     * 删除
     * @param id
     */
    @Override
    public void delect(Integer id) {
        int i = clazzMapper.countStudentByClazzId(id);
        if (i >0) {
            throw new RuntimeException("当前班级下有学生，不能删除！");
        }
        //1. 根据ID批量删除员工基本信息
        clazzMapper.delect(id);




    }




    /**
     * 添加
     * @param clazz
     */
    @Override
    public void add(Clazz clazz) {
        clazz.setCreateTime(LocalDateTime.now());//设置创建时间
        clazz.setUpdateTime(LocalDateTime.now());//设置修改时间
        clazzMapper.add(clazz);

    }

    /**
     * 根据id查询
     * @param id
     * @return
     */
    @Override
    public Clazz getById(Integer id) {

        return clazzMapper.getById(id);
    }

    /**
     * 修改
     * @param clazz
     */
    @Transactional
    @Override
    public void updeptAS(Clazz clazz) {
        clazz.setUpdateTime(LocalDateTime.now());
        clazzMapper.undeptas(clazz);

    }

    /**
     * 查询所有
     * @return
     */
    @Override
    public List<Clazz> getList() {
        return clazzMapper.getList();


    }
}
